]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ScreenShield: emit lock-status-changed at the end of animation for manual locking too
authorGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 29 Jan 2013 14:49:18 +0000 (15:49 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 31 Jan 2013 13:10:21 +0000 (14:10 +0100)
gnome-settings-daemon uses lock-status-changed/ActiveChanged to drive
screen blanking, so must wait for the animation end before emitting it.

https://bugzilla.gnome.org/show_bug.cgi?id=691964

js/ui/screenShield.js

index af8269fc7ef8c76b67f142235d2b78b57c600a91..9043bc3de6b0cd4f47964230180d992b17ba3e38 100644 (file)
@@ -951,6 +951,12 @@ const ScreenShield = new Lang.Class({
         this._lockScreenGroup.fixed_position_set = false;
         this._lockScreenScrollCounter = 0;
 
+        let prevIsActive = this._isActive;
+        this._isActive = true;
+
+        if (prevIsActive != this._isActive)
+            this.emit('lock-status-changed');
+
         this.emit('lock-screen-shown');
     },
 
@@ -1078,8 +1084,16 @@ const ScreenShield = new Lang.Class({
 
         this._resetLockScreen(animate, animate);
 
-        this._isActive = true;
-        this.emit('lock-status-changed');
+        // We used to set isActive and emit lock-status-changed here,
+        // but now we do that from lockScreenShown, which means
+        // there is a 0.3 seconds window during which the lock
+        // screen is effectively visible and the screen is locked, but
+        // the DBus interface reports the screensaver is off.
+        // This is because when we emit ActiveChanged(true),
+        // gnome-settings-daemon blanks the screen, and we don't want
+        // blank during the animation.
+        // This is not a problem for the idle fade case, because we
+        // activate without animation in that case.
     },
 
     lock: function(animate) {